#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <iostream>
#define _clr(x,a) memset(x,a,sizeof(x));
using namespace std;
const int N=4020;
string s[N];
int n;
int Next[N];
void kmp_pre(string a){
    int l=a.size();
    _clr(Next,0);
    Next[0]=-1;
    int i=0;
    int j=-1;
    while(i<l){
        if(j==-1 || a[i]==a[j]){
            Next[++i]=++j;
        }
        else{
            j=Next[j];
        }
    }
}
int kmp(string s,string p){
    kmp_pre(p);
    int sl=s.size();
    int pl=p.size();
    int i=0,j=0;
    while(i<sl && j<pl){
        if(j==-1 || s[i]==p[j]){
            i++;
            j++;
        }
        else{
            j=Next[j];
        }
    }
    if(j==pl){
        return i-j;
    }
    else{
        return -1;
    }
}
int main(void){
    while(~scanf("%d",&n) && n){
        int _min=0x3f3f3f3f;
        int idx=0;
        for(int i=0;i<n;i++){
            cin>> s[i];
            if(s[i].size()<_min){
                _min=s[i].size();
                idx=i;
            }
        }
        bool flag=false;
        string sub;
        string ans;
        //枚举子串长度
        for(int i=_min;i>0;i--){
            //枚举子串起点
            for(int j=0;j+i<=_min;j++){
                sub=s[idx].substr(j,i);
                //匹配
                int k=0;
                for(;k<n;k++){
                    if(k==idx){
                        continue;
                    }
                    if(kmp(s[k],sub)==-1){
                        break;
                    }
                }
                if(k==n){
                    //取字典序小的 这个判断一定要放里面，即有该长度的子串匹配成功
                    if(ans.compare("")==0 || ans.compare(sub)>0){
                        ans=sub;
                    }
                    flag=true;
                }
            }
            if(flag){
                break;
            }
        }
        if(flag){
            cout << ans << endl;
        }
        else{
            printf("IDENTITY LOST\n");
        }
    }
    return 0;
}
